package com.ccf.business.etl.service;

import com.ccf.business.etl.model.dto.FlowInfoDTO;
import com.component.api.model.param.TableColumn;
import com.ccf.business.etl.model.Flow;
import com.common.model.result.PageResult;
import com.common.model.pojo.Query;
import com.service.mybatis.service.ISuperFlagService;
import com.service.mybatis.service.ISuperService;

import java.util.List;
import java.util.Map;


/**
 * 流程表
 *
 * @author ccf
 * @date 2021-11-29 18:02:10
 */
public interface IFlowService extends ISuperFlagService<Flow> {
    /**
     * 列表
     * @param query
     * @return
     */
    PageResult<Flow> findList(Query query);

    /**
     * 保存和解析流程
     * @param flow
     * @return
     */
    String saveAndAnalysis(Flow flow);

    /**
     * 查看详情
     * @param flowId
     */
    FlowInfoDTO getDetailById(String flowId);

    /**
     * 测试运行
     * @param id 流程id
     * @param data 运行数据
     * @return 返回一个虚拟流程id 为了查询日志
     */
    Flow testRunning(String id, String data);

    /**
     * 任务调度的运行
     * @param flowId 运行
     */
    String running(String flowId);

    /**
     * copy流程到任务里执行
     * @param flowId
     * @return 返回的是重组后的data
     */
    String copy(String flowId, String taskId);

    /**
     * 选择字段
     * @param data
     * @param currentId
     * @return 前组件id 和列信息
     */
    Map<String, List<TableColumn>> selectFields(String data, String currentId);

    /**
     * 删除校验接口
     * @param id
     * @return
     */
    boolean deleteValidate(String id);

    /**
     * 判断流程状态
     * @param id
     * @return
     */
    boolean status(String id);

    /**
     * 强行停止流程
     * @param id
     * @return
     */
    boolean stopTest(String id);
}

